from flask import Flask
from Setting import map_config


# 负责创建APP
def create_app(config_type):
    app = Flask(__name__)  # __name__表示flask程序所在的包。帮助flask定位程序的根目录，以便找到静态文件盒模板文件的位置
    # 加载项目的配置
    app.config.from_object(map_config.get(config_type))

    # 初始化限流器
    from comment.utils.limiter import limiter as lmt
    lmt.init_app(app)

    # 加载日志处理的工具
    from comment.utils.logger import create_logger
    create_logger(app)

    # 初始化SQLAlchemy
    from comment.models import db
    db.init_app(app)

    # 初识话redis数据库的链接
    from comment.utils.shopping_redis import redis_client
    redis_client.init_app(app)

    # 添加请求钩子
    from comment.utils.requests_wares import jwt_request_authorization
    app.before_request(jwt_request_authorization)  # 所有服务器的请求都有请求钩子

    # 加载模块的蓝图
    from Shopping.resources.user import user_bp
    app.register_blueprint(user_bp)  # 注册user模块的蓝图

    return app
